package com.payment.client.config;

import com.netflix.loadbalancer.*;
import feign.Client;
import feign.Request;
import feign.RequestInterceptor;
import feign.Response;
import org.springframework.context.annotation.Bean;
import org.springframework.core.annotation.Order;

import java.io.IOException;
import java.util.List;

/**
 * @author dzh
 * @date 2022/12/27 17:04
 */
public class SomethingClientConfig {

    // 需要增加额外消息头信息使用这个，消息头可以使用配置完成
    // 拦截器可以实现修改path的功能，但是不能修改host。修改host需要自定义client
    @Bean
    @Order(1000)
    public RequestInterceptor getRequestInterceptor() {
        return template -> {
            // 修改头信息
            template.header("Authorization", "okk==");

            // 修改路径
            String path = template.path();
            template.uri(path);
        };
    }

    // 如果需要实现不一样的参数调用不同的服务，使用这个修改host
//    @Bean
    public Client getClient() {
        return new Client() {
            @Override
            public Response execute(Request request, Request.Options options) throws IOException {
                String url = request.url();
                url = url.replace("BAIDU", "www.baidu.com");
                Request req = Request.create(request.httpMethod(), url, request.headers(), request.body(), request.charset(), request.requestTemplate());
                return new Default(null, null).execute(req, options);
            }
        };
    }

}
